//package com.zhihuiyanche.common.util;
//
//import java.io.BufferedReader;
//import java.io.DataInputStream;
//import java.io.DataOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.io.OutputStream;
//import java.io.Writer;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//import java.sql.Timestamp;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//
//import net.sf.json.JSONArray;
//import net.sf.json.JSONObject;
//
//import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
//import org.apache.commons.httpclient.HttpClient;
//import org.apache.commons.httpclient.HttpStatus;
//import org.apache.commons.httpclient.methods.GetMethod;
//import org.apache.commons.httpclient.params.HttpMethodParams;
//import org.apache.commons.httpclient.util.DateUtil;
//import org.apache.http.HttpResponse;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.DefaultHttpClient;
//import org.apache.http.util.EntityUtils;
//import org.apache.log4j.Logger;
//import org.codehaus.jackson.JsonNode;
//import org.codehaus.jackson.map.ObjectMapper;
//import org.dom4j.Document;
//import org.dom4j.Element;
//import org.dom4j.io.SAXReader;
//import org.springframework.stereotype.Service;
//import org.springframework.web.util.HtmlUtils;
//
//import com.zhihuiyanche.common.constant.Oper;
//import com.zhihuiyanche.common.constant.Type;
//import com.zhihuiyanche.common.model.Data;
//import com.zhihuiyanche.common.model.resp.Article;
//import com.zhihuiyanche.common.model.resp.NewsMessage;
//import com.zhihuiyanche.common.model.resp.TextMessage;
//
///**
// * 微信工具类 微信所有相关操作放在此处
// * 
// * @author zjf
// *
// */
//@Service
//public class WXThridUtil
//{
//
//	// 用来排重
//	private static List<String>			msgIdList					= new ArrayList<String>();
//	private static MemberService		memberService;
//	private static AutoReplyService		autoReplyService;
//	private static MessageRecordService	messageRecordService;
//	private static DefinedMenuService	definedMenuService;
//	private static WxQrcodeService		qrcodeService;
//	private static MemberDao			memberDao;
//	private static ConfigService		configService;
//	private static RedisTemplateDao		redisTemplateDao;
//
//	// private final static String COMPONENT_APPID =
//	// com.tzx.framework.common.constant.Constant.getSystemMap().get("wechat_component_appid");
//	// private final static String COMPONENT_APPSECRET =
//	// com.tzx.framework.common.constant.Constant.getSystemMap().get("wechat_component_appsecret");
//	// private final static String COMPONENT_ENCODINGAESKEY =
//	// com.tzx.framework.common.constant.Constant.getSystemMap().get("wechat_compoment_encodingaeskey");
//	// private final static String COMPONENT_TOKEN =
//	// com.tzx.framework.common.constant.Constant.getSystemMap().get("wechat_compoment_token");
//	private final static String			COMPONENT_APPID				= "wx54221b218387ae71";
//	private final static String			COMPONENT_APPSECRET			= "0e92590caffe9c0c31d49231ac73aa6c";
//	private final static String			COMPONENT_ENCODINGAESKEY	= "Dlf6NTLNpIZyA3MOrLRlIHV46QcWHcAi0G84aEL86p2";
//	private final static String			COMPONENT_TOKEN				= "tzx";
//	private static Logger				logger						= Logger.getRootLogger();
//	/**
//	 * 开发者微信Id
//	 */
//	private static String				myId;
//	private static XStream				xstream						= new XStream(new XppDriver()
//																	{
//																		public HierarchicalStreamWriter createWriter(Writer out)
//																		{
//																			return new PrettyPrintWriter(out)
//																			{
//																				// 对所有xml节点的转换都增加CDATA标记
//																				boolean	cdata	= true;
//
//																				public void startNode(String name, Class clazz)
//																				{
//																					super.startNode(name, clazz);
//																				}
//
//																				protected void writeText(QuickWriter writer, String text)
//																				{
//																					if (cdata)
//																					{
//																						writer.write("<![CDATA[");
//																						writer.write(text);
//																						writer.write("]]>");
//																					}
//																					else
//																					{
//																						writer.write(text);
//																					}
//																				}
//																			};
//																		}
//																	});
//
//	/**
//	 * 验证微信消息，通过微信提供的算法验证是否接入成功
//	 * 
//	 * @param token
//	 * @param signature
//	 * @param timestamp
//	 * @param nonce
//	 * @return
//	 */
//	public static boolean checkSignature(String token, String signature, String timestamp, String nonce)
//	{
//		String[] arr = new String[]
//		{ token, timestamp, nonce };
//		// 将token、timestamp、nonce三个参数进行字典序排序，按字符串升序
//		Arrays.sort(arr);
//		StringBuilder content = new StringBuilder();
//		for (int i = 0; i < arr.length; i++)
//		{
//			content.append(arr[i]);
//		}
//		MessageDigest md = null;
//		String tmpStr = null;
//
//		try
//		{
//			// MessageDigest java.security.MessageDigest
//			// SHA-1： md5加密算法的一种
//			md = MessageDigest.getInstance("SHA-1");
//			// 将三个参数字符串拼接成一个字符串进行sha1加密
//			byte[] digest = md.digest(content.toString().getBytes());
//			tmpStr = byteToStr(digest);
//		}
//		catch (NoSuchAlgorithmException e)
//		{
//			e.printStackTrace();
//		}
//
//		content = null;
//		// 将sha1加密后的字符串可与signature对比，标识该请求来源于微信
//		return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
//	}
//
//	private static String byteToStr(byte[] byteArray)
//	{
//		String strDigest = "";
//		for (int i = 0; i < byteArray.length; i++)
//		{
//			strDigest += byteToHexStr(byteArray[i]);
//		}
//		return strDigest;
//	}
//
//	/**
//	 * 将字节转换为十六进制字符串
//	 * 
//	 * @param mByte
//	 * @return
//	 */
//	private static String byteToHexStr(byte mByte)
//	{
//		char[] Digit =
//		{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
//		char[] tempArr = new char[2];
//		tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
//		tempArr[1] = Digit[mByte & 0X0F];
//
//		String s = new String(tempArr);
//		return s;
//	}
//
//	/**
//	 * 解析微信发来的请求（XML）
//	 * 
//	 * @param request
//	 * @return
//	 * @throws Exception
//	 */
//	public static Map<String, String> parseXml(HttpServletRequest request) throws Exception
//	{
//		// 将解析结果存储在HashMap中
//		Map<String, String> map = new HashMap<String, String>();
//
//		// 从request中取得输入流
//		InputStream inputStream = request.getInputStream();
//		// 读取输入流
//		SAXReader reader = new SAXReader();
//		Document document = reader.read(inputStream);
//		// 得到xml根元素
//		Element root = document.getRootElement();
//		logger.info("root:" + root);
//
//		// 得到根元素的所有子节点
//		List<Element> elementList = root.elements();
//		logger.info("elementList" + elementList);
//		// 遍历所有子节点
//		for (Element e : elementList)
//			map.put(e.getName(), e.getText());
//		// 释放资源
//		inputStream.close();
//		inputStream = null;
//		logger.info("map:" + map);
//		return map;
//	}
//
//	/**
//	 * 消息对象转换成xml
//	 * 
//	 * @param textMessage
//	 *            消息对象
//	 * @return xml
//	 */
//	public static String beanToXml(Object bean)
//	{
//		xstream.alias("xml", bean.getClass());
//
//		// 图文
//		if (bean instanceof NewsMessage)
//		{
//			xstream.alias("item", new Article().getClass());
//		}
//
//		return xstream.toXML(bean);
//	}
//
//	/**
//	 * 火车票查询（火车票车次_出发站_终点站_列车类型（火车票））
//	 * 
//	 * @param content
//	 * @param openId
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String replyTrain(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//		myId = toUserName;
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		// 截取要翻译的内容
//		String code = content.trim().replace("快递", "");
//		// 获取翻译后的内容
//		String queryJoke = JokeTest.queryTrain(code);
//		// System.out.println(queryJoke);
//		if (queryJoke != null)
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取天气的内容
//			text.setContent(queryJoke);
//			xml = beanToXml(text);
//		}
//		else
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 快递（传参方式：快递订单号_快递公司名称(快递)）
//	 * 
//	 * @param content
//	 * @param openId
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String replyDelivery(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//		myId = toUserName;
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		// 截取要翻译的内容
//		String code = content.trim().replace("快递", "");
//		// 获取翻译后的内容
//		String queryJoke = JokeTest.queryDelivery(code);
//		// System.out.println(queryJoke);
//		if (queryJoke != null)
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取天气的内容
//			// text.setContent((String)queryJoke.get("text"));
//			text.setContent(queryJoke);
//			xml = beanToXml(text);
//		}
//		else
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 翻译
//	 * 
//	 * @param content
//	 * @param openId
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String replyTranslate(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//		myId = toUserName;
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		// param.put("openid", "oj2yWt0XXYDC7PgKYJiOWznjPk_s");
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		// 截取要翻译的内容
//		String code = content.trim().replace("翻译", "");
//		// 获取翻译后的内容
//		String queryJoke = JokeTest.queryTranslate(code);
//		// System.out.println(queryJoke);
//		if (queryJoke != null)
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取天气的内容
//			// text.setContent((String)queryJoke.get("text"));
//			text.setContent(queryJoke);
//			xml = beanToXml(text);
//		}
//		else
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 天气(以城市名_天气)
//	 * 
//	 * @param content
//	 * @param openId
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String replyWeather(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//		myId = toUserName;
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		// param.put("openid", "oj2yWt0XXYDC7PgKYJiOWznjPk_s");
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		// 截取城市名称
//		String cityName = content.trim().replace("天气", "");
//		// 获取天气
//		String queryJoke = JokeTest.queryWeather(cityName);
//		// System.out.println(queryJoke);
//		if (queryJoke != null)
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取天气的内容
//			// text.setContent((String)queryJoke.get("text"));
//			text.setContent(queryJoke);
//			xml = beanToXml(text);
//		}
//		else
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 笑话
//	 * 
//	 * @param content
//	 * @param openId
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String replyJoke(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		// 获取笑话
//		String queryJoke = JokeTest.queryJoke();
//		if (queryJoke != null)
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			// text.setFromUserName(myId);
//			text.setFromUserName(toUserName);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取笑话的内容
//			text.setContent(queryJoke);
//			xml = beanToXml(text);
//		}
//		else
//		{
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(toUserName);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 回复文本
//	 * 
//	 * @param content
//	 *            回复内容
//	 * @param openId
//	 *            用户openId
//	 * @return 微信需要的xml格式的报文
//	 * @throws Exception
//	 */
//	public static String reply(String content, String openId, String toUserName, String tenantId) throws Exception
//	{
//
//		// 保存上行消息
//		JSONObject param = new JSONObject();
//		param.put("tenancy_id", tenantId);
//		param.put("type", "上行");
//		param.put("content", HtmlUtils.htmlEscape(content));
//		param.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		param.put("openid", openId);
//		param.put("message_type", "文本");
//		param.put("is_reply", 0);
//		messageRecordService.saveMessageRecord(tenantId, param);
//
//		String xml = "";
//		List<JSONObject> jsonList = autoReplyService.getAutoReply(tenantId, content);
//		if (jsonList == null)
//		{
//			jsonList = autoReplyService.getReplyByType(tenantId, "default");
//		}
//
//		if (jsonList != null)
//		{
//			JSONObject json = jsonList.get(0);
//			String type = json.getString("type");
//			if ("news".equals(type))
//			{
//
//				// 图文回复
//				List<Article> articles = new ArrayList<Article>();
//
//				Article article = new Article();
//				article.setTitle(json.getString("fn_name"));
//				// article.setPicUrl(path + json.getString("pic_path"));
//				article.setPicUrl(json.getString("pic_path"));
//				// 值保存前30个字符
//				String discription = json.getString("discraption");
//				if (discription != null && discription.length() > 30)
//				{
//					discription = discription.substring(0, 30) + "...";
//				}
//				article.setDescription(discription);
//				if (json.getString("url") != null && json.getString("url").length() > 0)
//				{
//					article.setUrl(json.getString("url"));
//				}
//
//				articles.add(article);
//
//				NewsMessage news = new NewsMessage();
//				news.setToUserName(openId);
//				// news.setFromUserName(myId);
//				news.setFromUserName(toUserName);
//				news.setCreateTime(new Date().getTime() / 1000);
//				news.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS);
//				news.setArticleCount(articles.size());
//				news.setArticles(articles);
//
//				xml = beanToXml(news);
//			}
//			else if ("text".equals(type))
//			{
//				TextMessage text = new TextMessage();
//				text.setToUserName(openId);
//				text.setFromUserName(toUserName);
//				text.setCreateTime(new Date().getTime() / 1000);
//				text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//				text.setContent(json.getString("discraption"));
//				xml = beanToXml(text);
//			}
//		}
//		else
//		{
//
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(toUserName);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			text.setContent("我们已经收到您的留言，谢谢您的支持。");
//			xml = beanToXml(text);
//		}
//		return xml;
//
//	}
//
//	/**
//	 * 处理微信发来的请求
//	 * 
//	 * @param request
//	 * @param appId
//	 *            公众平台的appid
//	 * @param appSecret
//	 *            公众平台的秘钥
//	 * @return
//	 */
//	public static String processRequest(HttpServletRequest request, String tenantId)
//	{
//		DBContextHolder.setTenancyid(tenantId);
//		String respMessage = "";
//		try
//		{
//			// xml请求解析
//			Map<String, String> requestMap = parseXml(request);
//			// 发送方帐号（open_id）
//			String openId = requestMap.get("FromUserName");
//			// 公众帐号
//			myId = requestMap.get("ToUserName");
//			// 消息类型
//			String msgType = requestMap.get("MsgType");
//
//			// 文本消息
//			if (msgType.equals(Constant.REQ_MESSAGE_TYPE_TEXT))
//			{
//				// 排重
//				String MsgId = requestMap.get("MsgId");
//				if (msgIdList.contains(MsgId))
//				{
//					return "";
//				}
//				msgIdList.add(MsgId);
//				// 用户发送的内容
//				String content = requestMap.get("Content");
//				// 如果用户发送的内容以“笑话”两个字开头或结尾，都表示用户在使用笑话功能
//				String reply = "";
//				if (content.startsWith("笑话") || content.endsWith("笑话"))
//				{
//					// System.out.println(openId);
//					// System.out.println(tenantId);
//					reply = replyJoke(content, openId, myId, tenantId);
//				}
//				else if (content.startsWith("天气") || content.endsWith("天气"))
//				{
//					reply = replyWeather(content, openId, myId, tenantId);
//				}
//				else if (content.startsWith("翻译") || content.endsWith("翻译"))
//				{
//					reply = replyTranslate(content, openId, myId, tenantId);
//				}
//				else if (content.startsWith("快递") || content.endsWith("快递"))
//				{
//					reply = replyDelivery(content, openId, myId, tenantId);
//				}
//				else if (content.startsWith("火车票") || content.endsWith("火车票"))
//				{
//					reply = replyTrain(content, openId, myId, tenantId);
//				}
//				else
//				{
//					reply = reply(content, openId, myId, tenantId);
//				}
//				// reply = beanToXml(reply);
//
//				msgIdList.remove(MsgId);
//				return reply;
//
//			}
//			// 图片消息
//			else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_IMAGE))
//			{
//
//			}
//			// 地理位置消息
//			else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_LOCATION))
//			{
//
//			}
//			// 链接消息
//			else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_LINK))
//			{
//
//			}
//			// 音频消息
//			else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_VOICE))
//			{
//
//			}
//			// 事件推送
//			else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_EVENT))
//			{
//				// 排重
//				String FromUserName = requestMap.get("FromUserName");
//				String createTime = requestMap.get("CreateTime");
//				if (msgIdList.contains(FromUserName + createTime))
//				{
//					return "";
//				}
//				msgIdList.add(FromUserName + createTime);
//				// 事件类型
//				String eventType = requestMap.get("Event");
//				// 订阅
//				if (eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE))
//				{
//					long CreateTime = Long.parseLong(requestMap.get("CreateTime"));
//					String eventKey = "";
//					if (requestMap.containsKey("EventKey"))
//					{
//						eventKey = requestMap.get("EventKey");
//					}
//					String replyStr = subscribe(openId, CreateTime, tenantId, eventKey, myId);
//					msgIdList.remove(FromUserName + createTime);
//					return replyStr;
//				}
//				// 取消订阅
//				else if (eventType.equals(Constant.EVENT_TYPE_UNSUBSCRIBE))
//				{
//					unsubscribe(openId, tenantId);
//					msgIdList.remove(FromUserName + createTime);
//					return "";
//				}
//				// 自定义菜单点击事件
//				else if (eventType.equals(Constant.EVENT_TYPE_CLICK))
//				{
//					String EventKey = requestMap.get("EventKey");
//					if (EventKey != null && EventKey.length() > 0)
//					{
//						// 菜单id
//						String replyStr = clickMenuHandler(openId, tenantId, EventKey, myId);
//						msgIdList.remove(FromUserName + createTime);
//						return replyStr;
//					}
//					// String key = requestMap.get("EventKey");
//					// String replyStr = reply(key.trim(), openId);
//					// msgIdList.remove(FromUserName + createTime);
//					// return replyStr;
//
//				}
//				// 关注后扫描带参数的二维码
//				else if (eventType.equals(Constant.EVENT_TYPE_SCAN))
//				{
//
//					// String key = requestMap.get("EventKey");
//					// String replyStr = reply(key.trim(), openId);
//					// msgIdList.remove(FromUserName + createTime);
//					// return replyStr;
//					JSONObject json = new JSONObject();
//					json.put("openid", openId);
//					json.put("tenancy_id", tenantId);
//					json.put("event", Constant.EVENT_TYPE_SCAN);
//					json.put("create_time", createTime);
//					String eventKey = "";
//					if (requestMap.containsKey("EventKey"))
//					{
//						eventKey = requestMap.get("EventKey");
//					}
//					if (!"".equals(eventKey) && eventKey.contains("sub"))
//					{
//						String[] str = eventKey.split("_");
//						String[] sub = str[1].split(":");
//						String source = sub[1];
//						json.put("qrcode_detail_id", source);
//					}
//					qrcodeService.insertQrcode(tenantId, "wx_qrcode_record", json);
//					return "";
//
//				}
//				else
//				{
//					// 其他事件暂无处理，直接返回"";
//					return "";
//				}
//			}
//
//		}
//		catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//		return respMessage;
//
//	}
//
//	public static String replyTextMessage(String tenantId, String fromUserName, String toUserName, String msgType, String content, String MsgId)
//	{
//		DBContextHolder.setTenancyid(tenantId);
//		String respMessage = "";
//		try
//		{
//
//			// xml请求解析
//			// 发送方帐号（open_id）
//			String openId = fromUserName;
//			// 公众帐号
//			myId = toUserName;
//			// 消息类型
//			// String msgType = msgType;
//			// 排重
//			// String MsgId = requestMap.get("MsgId");
//			if (msgIdList.contains(MsgId))
//			{
//				return "";
//			}
//			msgIdList.add(MsgId);
//			// 用户发送的内容
//			// String content = requestMap.get("Content");
//			// 如果用户发送的内容以“笑话”两个字开头或结尾，都表示用户在使用笑话功能
//			String reply = "";
//			if (content.startsWith("笑话") || content.endsWith("笑话"))
//			{
//				reply = replyJoke(content, openId, myId, tenantId);
//			}
//			else if (content.startsWith("天气") || content.endsWith("天气"))
//			{
//				reply = replyWeather(content, openId, myId, tenantId);
//			}
//			else if (content.startsWith("翻译") || content.endsWith("翻译"))
//			{
//				reply = replyTranslate(content, openId, myId, tenantId);
//			}
//			else if (content.startsWith("快递") || content.endsWith("快递"))
//			{
//				reply = replyDelivery(content, openId, myId, tenantId);
//			}
//			else if (content.startsWith("火车票") || content.endsWith("火车票"))
//			{
//				reply = replyTrain(content, openId, myId, tenantId);
//			}
//			else
//			{
//				reply = reply(content, openId, myId, tenantId);
//			}
//			msgIdList.remove(MsgId);
//			return reply;
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		return respMessage;
//	}
//
//	public static String replyEventMessage(String tenantId, String fromUserName, String toUserName, Long createTime1, String eventType, String eventKey1)
//	{
//		// 排重
//		String FromUserName = fromUserName;
//		String openId = fromUserName;
//		String createTime = createTime1.toString();
//		if (msgIdList.contains(FromUserName + createTime))
//		{
//			return "";
//		}
//		msgIdList.add(FromUserName + createTime);
//		// 事件类型
//		// String eventType = requestMap.get("Event");
//		// 订阅
//		if (eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE))
//		{
//			long CreateTime = createTime1;
//			String eventKey = "";
//			if (null != eventKey1 && !"".equals(eventKey1))
//			{
//				eventKey = eventKey1;
//			}
//
//			String replyStr = "";
//			try
//			{
//				replyStr = subscribe(openId, CreateTime, tenantId, eventKey, myId);
//			}
//			catch (Exception e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			msgIdList.remove(FromUserName + createTime);
//			return replyStr;
//		}
//		// 取消订阅
//		else if (eventType.equals(Constant.EVENT_TYPE_UNSUBSCRIBE))
//		{
//			unsubscribe(openId, tenantId);
//			msgIdList.remove(FromUserName + createTime);
//			return "";
//		}
//		// 自定义菜单点击事件
//		else if (eventType.equals(Constant.EVENT_TYPE_CLICK))
//		{
//			String EventKey = eventKey1;
//			if (EventKey != null && EventKey.length() > 0)
//			{
//				// 菜单id
//				String replyStr = clickMenuHandler(openId, tenantId, EventKey, myId);
//				msgIdList.remove(FromUserName + createTime);
//				return replyStr;
//			}
//
//		}
//		// 关注后扫描带参数的二维码
//		else if (eventType.equals(Constant.EVENT_TYPE_SCAN))
//		{
//
//			// String key = requestMap.get("EventKey");
//			// String replyStr = reply(key.trim(), openId);
//			// msgIdList.remove(FromUserName + createTime);
//			// return replyStr;
//			JSONObject json = new JSONObject();
//			json.put("openid", openId);
//			json.put("tenancy_id", tenantId);
//			json.put("event", Constant.EVENT_TYPE_SCAN);
//			json.put("create_time", createTime);
//			String eventKey = "";
//			if (null != eventKey1 && !"".equals(eventKey1))
//			{
//				eventKey = eventKey1;
//			}
//			if (!"".equals(eventKey) && eventKey.contains("sub"))
//			{
//				String[] str = eventKey.split("_");
//				String[] sub = str[1].split(":");
//				String source = sub[1];
//				json.put("qrcode_detail_id", source);
//			}
//			try
//			{
//				qrcodeService.insertQrcode(tenantId, "wx_qrcode_record", json);
//			}
//			catch (Exception e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//		return "";
//	}
//
//	/**
//	 * 关注处理
//	 * 
//	 * @param openId
//	 * @param CreateTime
//	 *            事件推送时间
//	 * @param appId
//	 * @param appSecret
//	 * @return
//	 */
//	@SuppressWarnings("static-access")
//	public static String subscribe(String openId, long CreateTime, String tenantId, String eventKey, String myId) throws Exception
//	{
//		String xml = "";
//		Map<String, Object> map = new HashMap<String, Object>();
//		List<JSONObject> memberList = null;
//
//		map.put("openid", openId);
//		map.put("tenancy_id", tenantId);
//		map.put("subscribe", true);
//		map.put("group_id", "0");
//		map.put("subscribe_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//		// 场景值 关注的话，正常关注没有。临时二维码为：qrscene_0 永久二维码为：qrscene_sub:11111
//		if (!"".equals(eventKey) && eventKey.contains("sub"))
//		{
//			String[] str = eventKey.split("_");
//			String[] sub = str[1].split(":");
//			String source = sub[1];
//			map.put("source", source);
//		}
//		if ("".equals(eventKey))
//		{
//			map.put("source", "allOrgan");
//		}
//
//		Data data = new Data();
//		List list = new ArrayList();
//
//		data.setTenantId(tenantId);
//
//		data.setOpenId(openId);
//
//		try
//		{
//			// 根据openId查找会员
//			memberList = memberService.getMemberInfo(data);
//
//			// 如果没有，则增加
//			if (null == memberList || memberList.size() == 0)
//			{
//
//				map.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//				map.put("isbind", "false");
//				map.put("iscomplete", "false");
//				map.put("money", "0");
//
//				// 用户基本信息
//				Map<String, Object> parammap = getInfoByopenId(openId, tenantId);
//				map.put("sex", parammap.get("sex"));
//				map.put("nickname", parammap.get("nickname"));
//				map.put("city", parammap.get("city"));
//				map.put("province", parammap.get("province"));
//				map.put("head_img_url", parammap.get("headimgurl"));
//				map.put("score", "0");
//				JSONObject json = JSONObject.fromObject(map);
//				list.add(json);
//				data.setData(list);
//				memberService.saveMember(data);
//
//			}
//			else if (!memberList.get(0).getBoolean("subscribe"))
//			{
//
//				// 如果有，且取消关注，则重新加关注
//				map.put("id", memberList.get(0).getString("id"));
//				JSONObject json = JSONObject.fromObject(map);
//				list.add(json);
//				data.setData(list);
//				memberService.saveMember(data);
//			}
//			else
//			{
//
//			}
//
//		}
//		catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//
//		List<JSONObject> jsonList = autoReplyService.getReplyByType(tenantId, "sub");
//		if (jsonList != null)
//		{
//			JSONObject json = jsonList.get(0);
//			String type = json.getString("type");
//			if ("news".equals(type))
//			{
//
//				// 图文回复
//				List<Article> articles = new ArrayList<Article>();
//
//				Article article = new Article();
//				article.setTitle(json.getString("fn_name"));
//				article.setPicUrl(json.getString("pic_path"));
//				article.setDescription(json.getString("discraption"));
//				article.setUrl(json.getString("url"));
//
//				articles.add(article);
//
//				NewsMessage news = new NewsMessage();
//				news.setToUserName(openId);
//				news.setFromUserName(myId);
//				news.setCreateTime(new Date().getTime() / 1000);
//				news.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS);
//				news.setArticleCount(articles.size());
//
//				news.setArticles(articles);
//				xml = beanToXml(news);
//			}
//			else if ("text".equals(type))
//			{
//				TextMessage text = new TextMessage();
//				text.setToUserName(openId);
//				text.setFromUserName(myId);
//				text.setCreateTime(new Date().getTime() / 1000);
//				text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//				text.setContent(json.getString("discraption"));
//				xml = beanToXml(text);
//			}
//		}
//		else
//		{
//			// 获取商户名称
//			JSONObject bean = configService.getConfigWebSite(tenantId);
//			String tenantName = "天子星";
//			if (bean != null)
//			{
//				if (MyUtil.checkEmpty(bean.optString("wx_name")))
//				{
//					tenantName = bean.optString("wx_name");
//				}
//			}
//			TextMessage text = new TextMessage();
//			text.setToUserName(openId);
//			text.setFromUserName(myId);
//			text.setCreateTime(new Date().getTime() / 1000);
//			text.setMsgType(Constant.REQ_MESSAGE_TYPE_TEXT);
//			// 获取官网首页的链接
//			List<JSONObject> menuList = definedMenuService.getMenuByParentId(tenantId, "page", 0);
//			String url = "";
//			if (menuList != null && menuList.size() > 0)
//			{
//				url = menuList.get(0).optString("realurl");
//			}
//			if (MyUtil.checkEmpty(url))
//			{
//				String targert = "/wallet/bindmobile.jsp?fromtype=member";
//				url = getRedrictUrlByPath(url, targert);
//				text.setContent("欢迎光临" + tenantName + "，点击<a href='" + url + "'>登录</a>，获取更多福利。");
//			}
//			else
//			{
//				text.setContent("欢迎您来到" + tenantName + "。");
//			}
//			xml = beanToXml(text);
//		}
//		return xml;
//	}
//
//	/**
//	 * 取消关注处理
//	 * 
//	 * @param openId
//	 */
//	public static void unsubscribe(String openId, String tenantId)
//	{
//		List<JSONObject> memberList = null;
//		Map<String, Object> map = new HashMap<String, Object>();
//		map.put("openid", openId);
//		map.put("tenancy_id", tenantId);
//		map.put("subscribe", false);
//		map.put("un_subscribe_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//
//		Data data = new Data();
//		List list = new ArrayList();
//		data.setTenantId(tenantId);
//		data.setOpenId(openId);
//		try
//		{
//			// 根据openId查找会员
//			memberList = memberService.getMemberInfo(data);
//			if (memberList != null && memberList.size() > 0)
//			{
//				JSONObject memberJson = memberList.get(0);
//				// 如果有，且取消关注，则重新加关注
//				map.put("id", memberJson.getString("id"));
//				JSONObject json = JSONObject.fromObject(map);
//				list.add(json);
//				data.setData(list);
//				memberService.saveMember(data);
//			}
//		}
//		catch (Exception e)
//		{
//			// System.out.println("==========" + e.getMessage());
//			logger.info("==========" + e.getMessage());
//			e.printStackTrace();
//		}
//	}
//
//	/**
//	 * 在关注者与公众号产生消息交互后，根据OpenID获取用户基本信息，包括昵称、头像、性别、所在城市、语言和关注时间。
//	 * 
//	 * @param openId
//	 * @param token
//	 * @return
//	 */
//	public static Map<String, Object> getInfoByopenId(String openId, String tenantId) throws Exception
//	{
//		Map<String, Object> params = new HashMap<String, Object>();
//		params.put("openid", openId);
//		String url = "https://api.weixin.qq.com/cgi-bin/user/info";
//		Map<String, String> map = new HashMap<String, String>();
//		// 获取token
//		String token = getAccessToken(tenantId);
//		// String
//		// token="TskxKaSdDZxZY4Wp5obdeWBCI_LhMOzUwV3nMnjbHq0381Q0Dqi5UERDez_cZESCfI49lajv7w42fg11lQTjG7Evep5S2Rnl1Mc6rCVHPjrxaYt3moK85XQ0pCtnPBDHEUYfADDWMQ";
//		logger.info("tiken:" + token);
//		map.put("access_token", token);
//		map.put("openid", openId);
//		map.put("lang", "zh_CN");
//		logger.info("map:" + map);
//		JsonNode rootNode = sendHttpRequest(url, map);
//		logger.info("rootNode:" + rootNode);
//		// 用户是否订阅该公众号标识，值为0时，代表此用户没有关注该公众号，拉取不到其余信息。
//		int subscribe = rootNode.findValue("subscribe").getValueAsInt();
//		params.put("subscribe", subscribe);
//		if (subscribe == 0)
//		{
//			return params;
//		}
//		// 用户的昵称
//		String nickname = rootNode.findValue("nickname").getValueAsText();
//		// 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
//		int sex = rootNode.findValue("sex").getValueAsInt();
//		// 用户所在城市
//		String city = rootNode.findValue("city").getValueAsText();
//		// 用户所在城市
//		String province = rootNode.findValue("province").getValueAsText();
//		// 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空
//		String headimgurl = rootNode.findValue("headimgurl").getValueAsText();
//		// 用户关注时间，为时间戳。如果用户曾多次关注，则取最后关注时间
//		long subscribe_time1 = rootNode.findValue("subscribe_time").getValueAsLong();
//		String subscribe_time = DateUtil.format(new Timestamp(subscribe_time1 * 1000));
//		params.put("nickname", nickname);
//		params.put("sex", sex);
//		params.put("city", city);
//		params.put("province", province);
//		params.put("headimgurl", headimgurl);
//		params.put("subscribe_time", subscribe_time);
//		return params;
//	}
//
//	/**
//	 * 获取access_token 根据缓存时间判断access_token是否失效。
//	 * 
//	 * @return
//	 * @throws Exception
//	 */
//	public static String getAccessToken(String tenantId)
//	{
//		DBContextHolder.setTenancyid(tenantId);
//		JSONObject authorizerMessage = WXThridConfig.getConfigBean(tenantId);
//		// JSONObject authorizerMessage=new JSONObject();
//		// authorizerMessage.put("authorizer_access_token",
//		// "o1nZbObCa2pms3MUs8rKyieAeAfbkQHRjMAa6BWPTC6WUPFDXY1xJucJeErhCXsDNMaIPZ7JJmYfZfllzj-d0iafPuIinIS0ccerSYVVS6NPTuAdwL_BtYhTyvUsnI23CLMdAJDQZA");
//		// authorizerMessage.put("token_createtime", "2016-02-26 11:01:48");
//		if (null != authorizerMessage)
//		{
//			if (null != authorizerMessage.get("authorizer_access_token") && authorizerMessage.getString("authorizer_access_token").length() > 0 && authorizerMessage.containsKey("token_createtime") && authorizerMessage.getString("token_createtime").length() > 0)
//			{
//				Object object = authorizerMessage.get("authorizer_appid");
//				if (null == object)
//				{
//					return null;
//				}
//				String authorizerAppid = (String) object;
//				// String authorizerAppid="wx10c1ab41ac2e3949";
//				Object object1 = authorizerMessage.get("authorizer_access_token");
//				if (null == object1)
//				{
//					return null;
//				}
//				String authorizer_access_token = (String) object1;
//				Object object2 = authorizerMessage.get("token_createtime");
//				if (null == object2)
//				{
//					return null;
//				}
//				Long token_createtime = DateUtil.parseDateAll(authorizerMessage.getString("token_createtime")).getTime();
//				if (authorizer_access_token != null && (new Date().getTime() - token_createtime) < 2 * 60 * 60 * 1000)
//				{
//					logger.info("++++++++++++toke:" + authorizer_access_token);
//					return authorizer_access_token;
//				}
//			}
//		}
//		return getNewAccessToken(tenantId);
//
//	}
//
//	/**
//	 * 重新获取access_token
//	 * 
//	 * @param tenantId
//	 * @return
//	 * @throws Exception
//	 */
//	public static String getNewAccessToken(String tenantId)
//	{
//		String component_access_token = (String) FromRedisUtil.getComponentAccessToken("component_access_token");
//		// String
//		// component_access_token="lJZcHyg6LA252GqT6Hpml2lkBqEdajwwuKFYPIzk_25z5eYSwQVI3VhgJctXLDVFQqoqTTRPQhDKimroljEf20ma7tnDzXw4twvrWJIvVqgNSz-dDyiCmgWDb3XKPi-WAARdAHAPPG";
//		// 刷新获取令牌(从数据库中获取)
//		// String
//		// authorizer_refresh_token="refreshtoken@@@WGPS0zo_d--vm6ERzf8VxOOoRbr0ZsYc2SjkmontOS01";
//		// 根据授权方的appid获取出数据库中的信息
//		JSONObject selectAuthorizerMessage = WXThridConfig.getConfigBean(tenantId);
//		JSONObject param = new JSONObject();
//		if (null != selectAuthorizerMessage)
//		{
//			String authorizer_refresh_token = selectAuthorizerMessage.optString("authorizer_refresh_token");
//			String authorizer_appid = (String) selectAuthorizerMessage.get("authorizer_appid");
//			// String authorizer_appid="wx10c1ab41ac2e3949";
//			// String
//			// authorizer_refresh_token="fvh7-wT2yUtgSPaUcwlKdhMUOIPjVvmRGgQ2EpyslZ0";
//			if (authorizer_refresh_token.length() > 4 && authorizer_appid.length() > 4)
//			{
//				try
//				{
//					ApiAuthorizerToken apiAuthorizerToken = new ApiAuthorizerToken();
//					apiAuthorizerToken.setAuthorizer_appid(authorizer_appid);
//					apiAuthorizerToken.setAuthorizer_refresh_token(authorizer_refresh_token);
//					apiAuthorizerToken.setComponent_appid(COMPONENT_APPID);
//					JSONObject result = JwThirdAPI.apiAuthorizerToken(apiAuthorizerToken, component_access_token);
//					Object object = result.get("authorizer_access_token");
//					if (null == object)
//					{
//						return null;
//					}
//					String authorizer_access_token = (String) result.get("authorizer_access_token");
//					param.put("authorizer_access_token", authorizer_access_token);
//					param.put("authorizer_appid", authorizer_appid);
//					param.put("token_createtime", DateUtil.getNowDateYYDDMMHHMMSS());
//					WXThridConfig.updateConfigBean(tenantId, param);
//					logger.info("apiAuthorizerToken2:" + result);
//					logger.info("token_createtime:" + param.get("token_createtime"));
//					return authorizer_access_token;
//				}
//				catch (WexinReqException e)
//				{
//					// TODO Auto-generated catch block
//					// e.printStackTrace();
//					logger.info(e.getMessage());
//				}
//			}
//			else
//			{
//				return null;
//			}
//		}
//		return null;
//	}
//
//	/**
//	 * 微信http请求接口，用于公众平台交互，获取数据或推送数据
//	 * 
//	 * @param url
//	 *            要请求的url
//	 * @param paramMap
//	 *            请求的参数，map
//	 * @return
//	 */
//	public static JsonNode sendHttpRequest(String url, Map<String, String> map)
//	{
//		HttpClient client = new HttpClient();
//		JsonNode rootNode = null;
//		GetMethod method = null;
//
//		StringBuilder sb = new StringBuilder(url + "?");
//		Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
//		while (it.hasNext())
//		{
//			Map.Entry<String, String> entry = it.next();
//			sb.append(entry.getKey() + "=" + entry.getValue() + "&");
//		}
//		String requestUrl = sb.toString().substring(0, sb.toString().length() - 1);
//
//		try
//		{
//			method = new GetMethod(requestUrl);
//			method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
//
//			// Execute the method.
//			int statusCode = client.executeMethod(method);
//			if (statusCode != HttpStatus.SC_OK)
//			{
//				method.releaseConnection();
//				throw new Exception("http请求异常：" + method.getStatusLine());
//			}
//
//			String respStr = new String(method.getResponseBody(), "utf-8");
//
//			ObjectMapper objectMapper = new ObjectMapper();
//			rootNode = objectMapper.readTree(respStr);
//		}
//		catch (Exception e)
//		{
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}
//		finally
//		{
//			// Release the connection.
//			method.releaseConnection();
//		}
//		return rootNode;
//	}
//
//	/**
//	 * 创建自定义菜单
//	 * 
//	 * @param tenantId
//	 */
//	public static boolean createMenu(String tenantId, String content)
//	{
//		JsonNode rootNode = null;
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + token;
//		// String content =
//		// "{\"button\": [{\"name\": \"吃喝玩\", \"sub_button\": [{\"type\": \"view\", \"name\": \"优惠活动\", \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/activityList.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"},{\"type\":\"view\",\"name\": \"预定\",  \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/organList.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"}]}, {\"name\": \"爱游戏\", \"sub_button\": [{\"type\": \"view\", \"name\": \"抢红包\", \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/earnMoney.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"},{\"type\": \"view\", \"name\": \"大转盘\",  \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/earnMoney.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"}]},{\"name\": \"我的钱包\", \"sub_button\": [{\"type\": \"view\", \"name\": \"了解与加盟\", \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/join.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"},{\"type\":\"view\",\"name\": \"我的钱包\",  \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/wallet.jsp&response_type=code&scope=snsapi_base&state=hdl#wechat_redirect\"}]}]}";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			String resData = EntityUtils.toString(result.getEntity());
//			ObjectMapper objectMapper = new ObjectMapper();
//			rootNode = objectMapper.readTree(resData);
//			int code = rootNode.findValue("errcode").getValueAsInt();
//			if (code == 0)
//			{
//				return true;
//			}
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}// 解决中文乱码问题
//		return false;
//	}
//
//	/**
//	 * 长链接转短连接
//	 * 
//	 * @param tenantId
//	 * @return
//	 */
//	public static String long2short(String tenantId, String url)
//	{
//		String resData = "";
//		String token = getAccessToken(tenantId);
//		// 测试地址
//		url = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=" + token;
//		String content = "{\"action\": \"long2short\",\"long_url\":\"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8103423aec5ce6e5&redirect_uri=http://124.205.138.106/tzxsaas/pages/weixin/front/home.jsp&response_type=code&scope=snsapi_base&state=1#wechat_redirect\"}";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			resData = EntityUtils.toString(result.getEntity());
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}// 解决中文乱码问题
//		return resData;
//	}
//
//	/**
//	 * /** 微信post请求相关方法
//	 * 
//	 * @param memberService
//	 * @return
//	 */
//	public static String weixinPost(String tenantId, String url, String content)
//	{
//		String resData = "";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			resData = EntityUtils.toString(result.getEntity());
//
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}// 解决中文乱码问题
//		return resData;
//	}
//
//	/**
//	 * 获取素材列表
//	 * 
//	 * @param memberService
//	 */
//	public static String getMaterialList(String tenantId, String type, String offset, String count)
//	{
//		String resData = "";
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + token;
//		String content = "{\"type\":\"" + type + "\",\"offset\":\"" + offset + "\",\"count\":\"" + count + "\"}";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			resData = EntityUtils.toString(result.getEntity(), "utf-8");
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}
//		return resData;
//	}
//
//	/**
//	 * 获取素材
//	 * 
//	 * @param memberService
//	 */
//	public static String getMateria(String tenantId, String media_id)
//	{
//		String resData = "";
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=" + token;
//		String content = "{\"media_id\":\"" + media_id + "\"}";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			resData = EntityUtils.toString(result.getEntity(), "utf-8");
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}
//		return resData;
//	}
//
//	/**
//	 * 向微信上传网络文件
//	 * 
//	 * @param tenantId
//	 * @param fileType
//	 * @param filePath
//	 * @return
//	 * @throws Exception
//	 */
//	public static String uploadToWeixinNetWork(String tenantId, String fileType, String filePath) throws Exception
//	{
//		String result = null;
//		if (filePath != null && filePath.length() > 0)
//		{
//			String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
//			URL url = new URL(filePath);
//			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//			InputStream input = new DataInputStream(conn.getInputStream()); // 原先为DataInputStream
//																			// input
//																			// =
//																			// new
//																			// DataInputStream(conn.getInputStream());新建时会在这一步卡住
//			result = WXThridUtil.uploadWechat(tenantId, fileType, fileName, input);
//		}
//		return result;
//	}
//
//	/**
//	 * 向微信上传本地文件
//	 * 
//	 * @param tenantId
//	 * @param fileType
//	 * @param filePath
//	 * @return
//	 * @throws Exception
//	 */
//	public static String uploadToWeixin(String tenantId, String fileType, String filePath) throws Exception
//	{
//		String result = null;
//		String allPath = new MyUtil().getClass().getResource("/").getPath();
//		String root = allPath.substring(0, allPath.indexOf("WEB-INF"));
//		filePath = root + "pages/weixin/admin/" + filePath;
//		File file = new File(filePath);
//		if (!file.exists() || !file.isFile())
//		{
//			throw new IOException("文件不存在");
//		}
//		FileInputStream inputSream = new FileInputStream(file);
//		result = WXThridUtil.uploadWechat(tenantId, fileType, file.getName(), inputSream);
//		return result;
//	}
//
//	/**
//	 * 文件上传到微信服务器
//	 * 
//	 * @param fileType
//	 *            文件类型
//	 * @param filePath
//	 *            文件路径
//	 * @return JSONObject
//	 * @throws Exception
//	 */
//	public static String uploadWechat(String tenantId, String fileType, String fileName, InputStream inputSream) throws Exception
//	{
//		JsonNode rootNode = null;
//		String result = null;
//		/**
//		 * 第一部分
//		 */
//		URL urlObj = new URL("https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + getAccessToken(tenantId) + "&type=" + fileType + "");
//		HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
//		con.setRequestMethod("POST"); // 以Post方式提交表单，默认get方式
//		con.setDoInput(true);
//		con.setDoOutput(true);
//		con.setUseCaches(false); // post方式不能使用缓存
//		// 设置请求头信息
//		con.setRequestProperty("Connection", "Keep-Alive");
//		con.setRequestProperty("Charset", "UTF-8");
//		// 设置边界
//		String BOUNDARY = "----------" + System.currentTimeMillis();
//		con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
//		// 请求正文信息
//		// 第一部分：
//		StringBuilder sb = new StringBuilder();
//		sb.append("--"); // 必须多两道线
//		sb.append(BOUNDARY);
//		sb.append("\r\n");
//		sb.append("Content-Disposition: form-data;name=\"media\";filename=\"" + fileName + "\"\r\n");
//		sb.append("Content-Type:application/octet-stream\r\n\r\n");
//		byte[] head = sb.toString().getBytes("utf-8");
//		// 获得输出流
//		OutputStream out = new DataOutputStream(con.getOutputStream());
//		// 输出表头
//		out.write(head);
//		// 文件正文部分
//		// 把文件已流文件的方式 推入到url中
//		DataInputStream in = new DataInputStream(inputSream);
//		int bytes = 0;
//		byte[] bufferOut = new byte[1024];
//		while ((bytes = in.read(bufferOut)) != -1)
//		{
//			out.write(bufferOut, 0, bytes);
//		}
//		in.close();
//		// 结尾部分
//		byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
//		out.write(foot);
//		out.flush();
//		out.close();
//		StringBuffer buffer = new StringBuffer();
//		BufferedReader reader = null;
//		try
//		{
//			// 定义BufferedReader输入流来读取URL的响应
//			reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
//			String line = null;
//			while ((line = reader.readLine()) != null)
//			{
//				// System.out.println(line);
//				buffer.append(line);
//			}
//			if (result == null)
//			{
//				result = buffer.toString();
//				ObjectMapper objectMapper = new ObjectMapper();
//				rootNode = objectMapper.readTree(result);
//				JsonNode node1 = rootNode.get("media_id");
//				result = node1.getTextValue();
//			}
//		}
//		catch (IOException e)
//		{
//			// System.out.println("发送POST请求出现异常！" + e);
//			// e.printStackTrace();
//			logger.info("发送POST请求出现异常！" + e);
//			throw new IOException("数据读取异常");
//		}
//		finally
//		{
//			if (reader != null)
//			{
//				reader.close();
//			}
//		}
//		// JSONObject jsonObj =new JSONObject(result);
//		return result;
//	}
//
//	/**
//	 * 删除素材
//	 * 
//	 * @param memberService
//	 */
//	public static String delMaterial(String tenantId, String id)
//	{
//		String resData = "";
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=" + token;
//		String content = "{\"media_id\":\"" + id + "\"}";
//		DefaultHttpClient httpClient = new DefaultHttpClient();
//		HttpPost method = new HttpPost(url);
//		StringEntity entity;
//		try
//		{
//			entity = new StringEntity(content, "utf-8");
//
//			entity.setContentEncoding("UTF-8");
//			entity.setContentType("application/json");
//			method.setEntity(entity);
//			HttpResponse result = httpClient.execute(method);
//			resData = EntityUtils.toString(result.getEntity(), "utf-8");
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}
//		return resData;
//	}
//
//	/**
//	 * 生成二维码
//	 * 
//	 * @param memberService
//	 */
//	public static String getErWei(String tenantId, String code) throws Exception
//	{
//		JsonNode rootNode = null;
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;
//		String content = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"sub:" + code + "\"}}}";
//		String str = weixinPost(tenantId, url, content);
//		ObjectMapper objectMapper = new ObjectMapper();
//		rootNode = objectMapper.readTree(str);
//		JsonNode node1 = rootNode.get("url");
//		String result = node1.getTextValue();
//		return result;
//	}
//
//	/**
//	 * 上传图文素材
//	 * 
//	 * @param tenantId
//	 * @param content
//	 * @return
//	 * @throws Exception
//	 */
//	public static String uploadNews(String tenantId, String content) throws Exception
//	{
//		JsonNode rootNode = null;
//		// 新增图文素材
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=" + token;
//		String str = weixinPost(tenantId, url, content);
//		ObjectMapper objectMapper = new ObjectMapper();
//		rootNode = objectMapper.readTree(str);
//		JsonNode node1 = rootNode.get("media_id");
//		String result = node1.getTextValue();
//		return result;
//	}
//
//	// ----------------------------------------------------------------------------------------------
//
//	/**
//	 * 上传图片文件，返回该图片在微信上的URL
//	 * 
//	 * @param tenantId
//	 * @param fileType
//	 * @param filePath
//	 * @return
//	 * @throws Exception
//	 */
//
//	public static String uploadMedias01(String tenantId, String filePath) throws Exception
//	{
//		String result = null;
//		if (filePath != null && filePath.length() > 0)
//		{
//			String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
//			URL url = new URL(filePath);
//			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//			InputStream in = conn.getInputStream();
//			DataInputStream input = new DataInputStream(in);
//
//			result = WXThridUtil.uploadMedias02(tenantId, fileName, input);
//		}
//		return result;
//	}
//
//	/**
//	 * 上传多媒体文件，微信返回url,其不支持外部url
//	 */
//	/**
//	 * 文件上传到微信服务器
//	 * 
//	 * @param fileType
//	 *            文件类型
//	 * @param filePath
//	 *            文件路径
//	 * @return JSONObject
//	 * @throws Exception
//	 */
//	public static String uploadMedias02(String tenantId, String fileName, InputStream inputSream) throws Exception
//	{
//		String result = null;
//		/**
//		 * 第一部分
//		 */
//		String token = getAccessToken(tenantId);
//		// 创建一个url对象
//		URL urlObj = new URL("https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" + token);// 微信API中的"上传图文内的图片，获取返回的url"接口
//
//		// 返回一个URLConnection对象，它表示到URL所引用的远程对象的连接
//		HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
//
//		con.setRequestMethod("POST"); // （设定请求方式）以Post方式提交表单，默认get方式
//		con.setDoInput(true);
//		con.setDoOutput(true);
//		con.setUseCaches(false); // post方式不能使用缓存
//		// 设置请求头信息
//		con.setRequestProperty("Connection", "Keep-Alive");
//		con.setRequestProperty("Charset", "UTF-8");
//		// 设置边界
//		String BOUNDARY = "----------" + System.currentTimeMillis();
//		con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
//		// 请求正文信息
//		// 第一部分：
//		StringBuilder sb = new StringBuilder();
//		sb.append("--"); // 必须多两道线
//		sb.append(BOUNDARY);
//		sb.append("\r\n");
//		sb.append("Content-Disposition: form-data;name=\"media\";filename=\"" + fileName + "\"\r\n");
//		sb.append("Content-Type:application/octet-stream\r\n\r\n");
//		byte[] head = sb.toString().getBytes("utf-8");
//		// 获得输出流
//		OutputStream out = new DataOutputStream(con.getOutputStream());
//		// 输出表头
//		out.write(head);
//		// 文件正文部分
//		// 把文件已流文件的方式 推入到url中
//		DataInputStream in = new DataInputStream(inputSream);
//		int bytes = 0;
//		byte[] bufferOut = new byte[1024];
//		while ((bytes = in.read(bufferOut)) != -1)
//		{
//			out.write(bufferOut, 0, bytes);
//		}
//		in.close();
//		// 结尾部分
//		byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
//		out.write(foot);
//		out.flush();
//		out.close();
//		StringBuffer buffer = new StringBuffer();
//		BufferedReader reader = null;
//
//		// 定义BufferedReader输入流来读取URL的响应
//		reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
//
//		String line = null;
//		while ((line = reader.readLine()) != null)
//		{
//			buffer.append(line);
//		}
//		// if (result == null) {
//		result = buffer.toString();
//		JSONObject jsonObject = JSONObject.fromObject(result);
//		jsonObject.getString("url");
//		// }
//		result = jsonObject.getString("url");
//		return result;
//	}
//
//	/**
//	 * 群发接口
//	 * 
//	 * @param tenantId
//	 * @param content
//	 * @return
//	 * @throws Exception
//	 */
//	public static int sendAll(String tenantId, String content, String type) throws Exception
//	{
//		JsonNode rootNode = null;
//		// 群发
//		String token = getAccessToken(tenantId);
//		String url = "";
//		if ("all".equals(type))
//		{
//			url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=" + token;
//		}
//		if (("member").equals(type))
//		{
//			url = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + token;
//		}
//		String str = weixinPost(tenantId, url, content);
//		logger.info("群发信息的返回值：" + str);
//		ObjectMapper objectMapper = new ObjectMapper();
//		rootNode = objectMapper.readTree(str);
//		JsonNode node1 = rootNode.get("errcode");
//		int result = node1.getIntValue();
//		return result;
//	}
//
//	/**
//	 * 群发测试接口
//	 * 
//	 * @param tenantId
//	 * @param content
//	 * @return
//	 * @throws Exception
//	 */
//	public static int sendAllTest(String tenantId) throws Exception
//	{
//		JsonNode rootNode = null;
//		// 群发
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=" + token;
//		String content = "{\"touser\":[\"oq1e5s3zZEpQecZBn_PyoLAova6s\"],\"mpnews\":{\"media_id\":\"sAc3Rd3vvzipXAlaclgagfCoOL3G2kgGaT9JC4HQvcI\"},\"msgtype\":\"mpnews\"}";
//		String str = weixinPost(tenantId, url, content);
//		ObjectMapper objectMapper = new ObjectMapper();
//		rootNode = objectMapper.readTree(str);
//		JsonNode node1 = rootNode.get("errcode");
//		int result = node1.getIntValue();
//		return result;
//	}
//
//	/**
//	 * 客服接口，回复用户
//	 * 
//	 * @param tenantId
//	 * @param openId
//	 * @param content
//	 * @return
//	 * @throws Exception
//	 */
//	public static int replyMember(String tenantId, String openId, String content) throws Exception
//	{
//		JsonNode rootNode = null;
//		// 客服接口
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + token;
//		String sendContent = "{\"touser\":\"" + openId + "\",\"msgtype\":\"text\", \"text\":{\"content\":\"" + content + "\"}}";
//		String str = weixinPost(tenantId, url, sendContent);
//		ObjectMapper objectMapper = new ObjectMapper();
//		rootNode = objectMapper.readTree(str);
//		JsonNode node1 = rootNode.get("errcode");
//		return node1.getIntValue();
//	}
//
//	/**
//	 * 发送模板消息
//	 * 
//	 * @param tenantId
//	 * @param openId
//	 * @param content
//	 * @return
//	 * @throws Exception
//	 */
//	public static void sendDemoMessage(String tenantId, String content) throws Exception
//	{
//		// 群发
//		String token = getAccessToken(tenantId);
//		String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
//		weixinPost(tenantId, url, content);
//
//	}
//
//	/**
//	 * 菜单click事件 TODO 暂时写死处理
//	 * 
//	 * @param openId
//	 * @param tenantId
//	 * @param EventKey
//	 * @return
//	 */
//	public static String clickMenuHandler(String openId, String tenantId, String EventKey, String myId)
//	{
//		// 查询菜单栏的url和菜单名称
//		// 如何确定业务的区分
//		System.out.println("clickMenuHandler");
//		Data param = new Data();
//		param.setType(Type.MEMBER);
//		param.setOper(Oper.search);
//		param.setSecret("0");
//		param.setTenantId(tenantId);
//		param.setOpenId(openId);
//		param.setMenuId(EventKey);
//		// 统计菜单点击
//		if (null != param.getMenuId() && !"".equals(param.getMenuId()))
//		{
//			try
//			{
//				JSONObject json = new JSONObject();
//				json.put("id", param.getMenuId());
//				System.out.println("json:" + json);
//				ClickCountService clickCountService = (ClickCountService) SpringConext.getApplicationContext().getBean(ClickCountService.NAME);
//				;
//				clickCountService.updateClickCount(tenantId, json);
//			}
//			catch (Exception e)
//			{
//				// TODO Auto-generated catch block
//				// e.printStackTrace();
//				logger.info(e.getMessage());
//			}
//		}
//		try
//		{
//			// 根据menuid获取该菜单栏目的详细内容
//			JSONObject menu = definedMenuService.getMenuById(tenantId, Integer.parseInt(EventKey));
//			if (menu == null || menu.size() <= 0)
//			{
//				return null;
//			}
//			List<JSONObject> paramList = memberService.getMemberInfoByOpenId(param);
//			if (paramList == null)
//			{
//				return null;
//			}
//			String title = "";
//			String description = "";
//			String targert = "";
//			// 统一获取底部菜单
//			List<JSONObject> menuList = definedMenuService.getDefinedMenu(param.getTenantId(), "page");
//			List<JSONObject> menuList02 = definedMenuService.getMenuOrderById(param.getTenantId(), "page");
//			// 如果没有用户信息，请求微信的用户信息，并存储
//			JSONArray memberList = paramList.get(0).optJSONArray("member");
//			if (memberList == null || memberList.size() <= 0)
//			{
//				Map<String, Object> map = WXThridUtil.getInfoByopenId(openId, tenantId);
//				int subscribe = (int) map.get("subscribe");
//				if (subscribe == 1)
//				{
//					map.put("subscribe", true);
//					map.put("create_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//					map.put("isbind", "false");
//					map.put("iscomplete", "false");
//					map.put("money", "0");
//					map.put("score", "0");
//					map.put("tenancy_id", tenantId);
//					map.put("group_id", "0");
//					map.put("source", "allOrgan");
//					map.put("subscribe_time", DateUtil.format(new Timestamp(System.currentTimeMillis())));
//					JSONObject json = JSONObject.fromObject(map);
//					memberDao = (MemberDao) SpringConext.getApplicationContext().getBean(MemberDao.NAME);
//					memberDao.insertIgnorCase(tenantId, "wx_member", json);
//					List<JSONObject> memberList_again = memberDao.getMemberInfo(param.getTenantId(), param.getOpenId());
//					paramList.get(0).put("member", memberList_again);
//				}
//				else
//				{
//					// 未关注 返回尚未关注的信息
//					String xml = getTexXML("异常提醒", "您尚未关注公众账号，暂时无法使用该功能。如果您已经关注，请尝试重新关注", openId, myId, "");
//					return xml;
//				}
//			}
//			JSONObject jsonObject = (JSONObject) paramList.get(0).optJSONArray("member").get(0);
//			boolean isbind = jsonObject.getBoolean("isbind");
//			// JSONObject jsonMenu = (JSONObject) menuList02.get(6);
//			// String url = jsonMenu.getString("realurl");
//			String url = "";
//			if (menuList02.size() > 0)
//			{
//				JSONObject jsonMenu = (JSONObject) menuList02.get(0);
//				url = jsonMenu.getString("realurl");
//			}
//			// TODO 按照菜单名称进行处理
//			String menuTitle = menu.getString("title");
//			if (menuTitle.contains("卡劵"))
//			{
//				if (isbind)
//				{
//					JSONObject jsonVip = (JSONObject) paramList.get(0).getJSONObject("vip");
//					JSONArray couponslist = jsonVip.getJSONArray("couponslist");
//					title = "优惠劵";
//					description = "尊敬的VIP会员您目前优惠劵为" + couponslist.size() + "张，参与更多活动赢得优惠劵";
//					targert = "my_coupon.jsp";
//				}
//				else
//				{
//					title = "优惠劵";
//					description = "尊敬的用户，请点击登录，获取更多福利";
//					targert = "bindmobile.jsp?fromtype=member";
//				}
//			}
//			else if (menuTitle.contains("积分"))
//			{
//				if (isbind)
//				{
//					// 查询分数
//					JSONObject jsonVip = (JSONObject) paramList.get(0).getJSONObject("vip");
//					String currentScore = jsonVip.getString("useful_credit") != null && jsonVip.getString("useful_credit").length() > 0 ? jsonVip.getString("useful_credit") : "0";
//					title = "积分查询";
//					description = "尊敬的VIP会员您目前积分为 " + currentScore + "，请参与更多活动赢取积分";
//					targert = "my_integral.jsp";
//				}
//				else
//				{
//					title = "积分查询";
//					description = "尊敬的用户，请点击登录，获取更多福利";
//					targert = "bindmobile.jsp?fromtype=member";
//				}
//			}
//			else
//			{// 我的会员卡
//				if (isbind)
//				{
//					JSONObject jsonVip = (JSONObject) paramList.get(0).getJSONObject("vip");
//					JSONArray cardlist = jsonVip.getJSONArray("cardlist");
//					float money = (float) paramList.get(0).getDouble("overCash");
//					int cardNum = cardlist.size();
//					title = "会员卡";
//					description = "尊敬的VIP会员您目前会员卡余额为" + money + "元，其他卡为 " + cardNum + "张";
//					targert = "my_card_1.jsp";
//				}
//				else
//				{
//					title = "会员卡";
//					description = "尊敬的用户，请点击登录，获取更多福利";
//					targert = "bindmobile.jsp?fromtype=member";
//				}
//			}
//			url = getRedrictUrl(url, targert);
//			String xml = getTexXML(title, description, openId, myId, url);
//			return xml;
//		}
//		catch (Exception e)
//		{
//			// e.printStackTrace();
//			logger.info(e.getMessage());
//		}
//		return null;
//	}
//
//	/**
//	 * 返回简单的文字xml结构
//	 * 
//	 * @param title
//	 * @param description
//	 * @param toUser
//	 * @param fromUser
//	 * @return
//	 */
//	public static String getTexXML(String title, String description, String toUser, String fromUser, String url)
//	{
//		// 图文回复
//		List<Article> articles = new ArrayList<Article>();
//		Article article = new Article();
//		article.setTitle(title);
//		article.setPicUrl(null);
//		article.setDescription(description);
//		article.setUrl(url);
//
//		articles.add(article);
//
//		NewsMessage news = new NewsMessage();
//		news.setToUserName(toUser);
//		news.setFromUserName(fromUser);
//		news.setCreateTime(new Date().getTime() / 1000);
//		news.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS);
//		news.setArticleCount(articles.size());
//		news.setArticles(articles);
//		String xml = beanToXml(news);
//		return xml;
//	}
//
//	/**
//	 * 根据状态获取url
//	 * 
//	 * @param url
//	 * @param isband
//	 * @return
//	 */
//	public static String getRedrictUrl(String url, String targert)
//	{
//		if (url != null)
//		{
//			String[] temp = url.split("&");
//			String targetElement = null;
//			for (String element : temp)
//			{
//				if (element.contains("redirect_uri"))
//				{
//					targetElement = element;
//				}
//			}
//			String[] elementtemp = targetElement.split("=");
//			String host = elementtemp[1];
//			host = host.substring(0, host.lastIndexOf("/") + 1);
//			host += targert;
//			String resultUrl = "redirect_uri=" + host;
//			url = url.replace(targetElement, resultUrl);
//			return url;
//		}
//		return null;
//	}
//
//	public static String getRedrictUrlByPath(String url, String targert)
//	{
//		if (url != null)
//		{
//			String[] temp = url.split("&");
//			String targetElement = null;
//			for (String element : temp)
//			{
//				if (element.contains("redirect_uri"))
//				{
//					targetElement = element;
//				}
//			}
//			String[] elementtemp = targetElement.split("=");
//			String host = elementtemp[1];
//			host = host.substring(0, host.lastIndexOf("/"));
//			host = host.substring(0, host.lastIndexOf("/"));
//			host += targert;
//			String resultUrl = "redirect_uri=" + host;
//			url = url.replace(targetElement, resultUrl);
//			return url;
//		}
//		return null;
//	}
//
//	// 测试
//	public static void main(String[] args)
//	{
//		// openId,tenantId
//		try
//		{
//			Map<String, Object> infoByopenId = getInfoByopenId("o9i92v_cz8nVZWu-HWIeJ8_qUwGw", "zhengzhouzisu");
//			logger.info("infoByopenId:" + infoByopenId);
//		}
//		catch (Exception e)
//		{
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
//
//	// **************注入一些类，可以调用service类********************
//	@Resource
//	public void setMemberService(MemberService memberService)
//	{
//		WXThridUtil.memberService = memberService;
//	}
//
//	public static MemberService getMemberService()
//	{
//		return memberService;
//	}
//
//	public static AutoReplyService getAutoReplyService()
//	{
//		return autoReplyService;
//	}
//
//	@Resource
//	public void setAutoReplyService(AutoReplyService autoReplyService)
//	{
//		WXThridUtil.autoReplyService = autoReplyService;
//	}
//
//	public static MessageRecordService getMessageRecordService()
//	{
//		return messageRecordService;
//	}
//
//	@Resource
//	public void setMessageRecordService(MessageRecordService messageRecordService)
//	{
//		WXThridUtil.messageRecordService = messageRecordService;
//	}
//
//	public static DefinedMenuService getDefinedMenuService()
//	{
//		return definedMenuService;
//	}
//
//	@Resource
//	public void setDefinedMenuService(DefinedMenuService definedMenuService)
//	{
//		WXThridUtil.definedMenuService = definedMenuService;
//	}
//
//	public static WxQrcodeService getQrcodeService()
//	{
//		return qrcodeService;
//	}
//
//	@Resource
//	public void setQrcodeService(WxQrcodeService qrcodeService)
//	{
//		WXThridUtil.qrcodeService = qrcodeService;
//	}
//
//	public static ConfigService getConfigService()
//	{
//		return configService;
//	}
//
//	@Resource
//	public void setConfigService(ConfigService configService)
//	{
//		WXThridUtil.configService = configService;
//	}
//
//	public static MemberDao getMemberDao()
//	{
//		return memberDao;
//	}
//
//	public static void setMemberDao(MemberDao memberDao)
//	{
//		WXThridUtil.memberDao = memberDao;
//	}
//
//}
